package com.lizonghui.googleplay.adapter;

import android.content.Intent;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.Toast;

import com.lizonghui.googleplay.activity.DetailActivity;
import com.lizonghui.googleplay.base.BaseHolder;
import com.lizonghui.googleplay.base.SuperBaseAdapter;
import com.lizonghui.googleplay.bean.ItemInfoBean;
import com.lizonghui.googleplay.control.ItemHolder;
import com.lizonghui.googleplay.manager.DownLoadManger;
import com.lizonghui.googleplay.utils.UIUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/6/24.
 * 对Home,App,Game三个的Adapter做抽取
 */
public class ItemAdapter extends SuperBaseAdapter<ItemInfoBean> {
    //使用集合保存adapter中的ItemHolder(观察者)  观察者是什么类型，就用什么类型的集合。这样才会有数据
    public List<ItemHolder> itemHolders = new ArrayList<>();

    private ItemHolder mItemHolder;

    public ItemAdapter(AbsListView absListView, List datas) {
        super(absListView, datas);
    }

    /**
     * @return 是否还有更多数据要加载
     * @des 子类决定是否加载更多数据
     */
    @Override
    protected boolean hasLoadMore() {
        return true;
    }

    /**
     * @param position
     * @return
     * @des 返回一个BaseHolder的子类对象
     * @call 走到getView方法时候，且（convertView == null）时候调用
     */
    @Override
    public BaseHolder getSpecialHolder(int position) {
        mItemHolder = new ItemHolder();

        //添加观察者到自己的集合中,后面就可以拿出来了，在onResume中添加到观察者集合中
        itemHolders.add(mItemHolder);

        //添加观察者到观察者集合中，后面pause时候会把集合中元素清空，不能拿它来做添加
        DownLoadManger.getInstance().addObserver(mItemHolder);
        return mItemHolder;

    }

    @Override
    public void onNormalItemClick(AdapterView<?> parent, View view, int position, long id) {
        //这里知道都是ItemInfoBean，就强转，才可以使用packageName.
        Toast.makeText(UIUtils.getContext(), ((ItemInfoBean) mDataSet.get(position)).packageName, Toast.LENGTH_SHORT).show();
        Intent intent = new Intent(UIUtils.getContext(), DetailActivity.class);
        //上下文不是Activity,所以我们要按系统提示设置
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        //传递额外值给DetailActivity
        intent.putExtra("packageName",((ItemInfoBean) mDataSet.get(position)).packageName);
        UIUtils.getContext().startActivity(intent);
    }
}
